﻿using System;
using System.Threading;

namespace _333ManualResetEvent
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            //#region 没使用Reset()和Set()
            //ManualResetEvent mansig;
            //bool isState = false;
            //mansig = new ManualResetEvent(isState);
            //Console.WriteLine("ManualResetEvent 调用 WaitOne 前 信号状态:{0}\t时间:{1}", isState.ToString(),DateTime.Now.ToString("HH:mm:ss.fff"));
            //bool state = mansig.WaitOne(5000, false);
            //Console.WriteLine("ManualResetEvent 调用 WaitOne 后 信号状态:{0}\t时间:{1}", state, DateTime.Now.ToString("HH:mm:ss.fff"));
            //#endregion
            // #region
            // ManualResetEvent manRE;
            // bool isSingle = true;
            // manRE = new ManualResetEvent(isSingle);
            // Console.WriteLine("ManualResetEvent 调用       WaitOne 前状态: {0}\t时间:{1}", isSingle.ToString(), DateTime.Now.ToString("HH:mm:ss.fff"));
            // bool state = manRE.WaitOne(5000, true);
            // Console.WriteLine("ManualResetEvent 调用第一次 WaitOne 后状态: {0}\t时间:{1}", state, DateTime.Now.ToString("HH:mm:ss.fff"));
            //// manRE.Set();
            // //manRE.Reset();
            // state = manRE.WaitOne(5000, true);
            // Console.WriteLine("ManualResetEvent 调用第二次 WaitOne 后状态: {0}\t时间:{1}", state, DateTime.Now.ToString("HH:mm:ss.fff"));
            // #endregion

            AutoResetEvent aRE;
            bool isState = false;
            aRE = new AutoResetEvent(isState);
            Console.WriteLine("AutoResetEvent 调用第一次 WaitOne 前状态: {0}\t时间:{1}", isState.ToString(), DateTime.Now.ToString("HH:mm:ss.fff"));
            bool state = aRE.WaitOne(5000, true);
            Console.WriteLine("AutoResetEvent 调用第一次 WaitOne 后状态: {0}\t时间:{1}", state, DateTime.Now.ToString("HH:mm:ss.fff"));
            state = aRE.WaitOne(5000, true);
            Console.WriteLine("AutoResetEvent 调用第二次 WaitOne 后状态: {0}\t时间:{1}", state, DateTime.Now.ToString("HH:mm:ss.fff"));
            Console.WriteLine("--------------------");
            Console.ReadKey();
        }
    }
}
